package com.hgl.bi.common.utils;

import com.hgl.bi.common.constant.ErrorCode;
import com.hgl.bi.common.exception.BusinessException;

/**
 * @program: BI
 * @description: 断言工具类
 * @author: hgl
 * @create: 2025-02-11 16:17
 */
public class AssertUtil {

    /**
     * 校验表达式是否为 true，如果为 false 则抛出 BusinessException
     *
     * @param expression 表达式
     * @param errorCode  错误码枚举
     * @throws BusinessException 如果表达式为 false
     */
    public static void isTrue(boolean expression, ErrorCode errorCode) {
        if (!expression) {
            throw new BusinessException(errorCode);
        }
    }

    /**
     * 校验对象是否为 null，如果不为 null 则抛出 BusinessException
     *
     * @param object    对象
     * @param errorCode 错误码枚举
     * @throws BusinessException 如果对象不为 null
     */
    public static void isNull(Object object, ErrorCode errorCode) {
        if (object != null) {
            throw new BusinessException(errorCode);
        }
    }

    /**
     * 校验对象是否不为 null，如果为 null 则抛出 BusinessException
     *
     * @param object    对象
     * @param errorCode 错误码枚举
     * @throws BusinessException 如果对象为 null
     */
    public static void notNull(Object object, ErrorCode errorCode) {
        if (object == null) {
            throw new BusinessException(errorCode);
        }
    }

    /**
     * 校验字符串是否为空，如果不为空则抛出 BusinessException
     *
     * @param str       字符串
     * @param errorCode 错误码枚举
     * @throws BusinessException 如果字符串不为空
     */
    public static void isEmpty(String str, ErrorCode errorCode) {
        if (str != null && !str.trim().isEmpty()) {
            throw new BusinessException(errorCode);
        }
    }

    /**
     * 校验字符串是否不为空，如果为空则抛出 BusinessException
     *
     * @param str       字符串
     * @param errorCode 错误码枚举
     * @throws BusinessException 如果字符串为空
     */
    public static void notEmpty(String str, ErrorCode errorCode) {
        if (str == null || str.trim().isEmpty()) {
            throw new BusinessException(errorCode);
        }
    }
}
